﻿#!/usr/bin/env python3
# -*- coding: utf-8 -*-

#一、基本的输入和输出命令：input()和print()
name = input('please enter your name: ')
print('hello,', name)

#二、数据类型:整数、浮点数、字符串、布尔值、空值
#整数和浮点数在计算机内部存储的方式是不同的，整数运算永远是精确的（除法难道也是精确的？是的！），而浮点数运算则可能会有四舍五入的误差
#如果字符串内部既包含'又包含"怎么办？可以用转义字符\来标识
#Python还允许用r''表示''内部的字符串默认不转义
#Python允许用'''...'''的格式表示多行内容
print(100)
print(1.1e-10)
print('I\'m \"OK\"!')
print(r'I\'m \"OK\"!')
print('''line1
line2
line3''')
print(not False)


#三、在Python中，等号=是赋值语句，可以把任意数据类型赋值给变量，同一个变量可以反复赋值，而且可以是不同类型的变量
#这种变量本身类型不固定的语言称之为动态语言，与之对应的是静态语言。静态语言在定义变量时必须指定变量类型，如果赋值的时候类型不匹配，就会报错
#对变量赋值x = y是把变量x指向真正的对象，该对象是变量y所指向的。随后对变量y的赋值不影响变量x的指向。
#/除法计算结果是浮点数，即使是两个整数恰好整除，结果也是浮点数;Python的整数没有大小限制;Python的浮点数也没有大小限制，但是超出一定范围就直接表示为inf（无限大）。
a = 'ABC'
b = a
a = 'XYZ'
print(b)
print(9/3)

#对于单个字符的编码，Python提供了ord()函数获取字符的整数表示，chr()函数把编码转换为对应的字符
#Python对bytes类型的数据用带b前缀的单引号或双引号表示
#要注意区分'ABC'和b'ABC'，前者是str，后者虽然内容显示得和前者一样，但bytes的每个字符都只占用一个字节
#len()函数计算的是str的字符数，如果换成bytes，len()函数就计算字节数
print(ord('A'))
print(chr(66))
print('\u4e2d\u6587')
print('中文'.encode('utf-8'))
print(b'ABC'.decode('ascii'))
print(b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore'))
print(len('中文'.encode('utf-8')))
print(len(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')))

#%运算符就是用来格式化字符串的。在字符串内部，%s表示用字符串替换，%d表示用整数替换，%f表示用浮点数替换,%x表示用十六进制整数替换，有几个%?占位符，后面就跟几个变量或者值，顺序要对应好
#如果你不太确定应该用什么，%s永远起作用，它会把任何数据类型转换为字符串;用%%来表示一个%
#另一种格式化字符串的方法是使用字符串的format()方法，它会用传入的参数依次替换字符串内的占位符{0}、{1}……，不过这种方式写起来比%要麻烦得多
print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)
print('Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125))


